use Test::More;
use Batch::Cluster::Result;
use GRID::Machine;
use Data::Dumper;

BEGIN
{
	if( defined $ENV{DEVELOPER} ) 
	{
		plan tests => 1+1+3+3+5;
	}
	else 
	{
		plan skip_all => 'Tests para el desarrollador';
	}
};

{ 
	use_ok('Batch::Cluster::Result') 
}

# Test para comprobar que se crea bien el array de objetos
{
	my @results_obj;
	my $numelements = 3;
	push @results_obj, GRID::Machine::Result->new ( results => [ $_ ] ) for (1..$numelements);
	
	my $result = Batch::Cluster::Result->new(results => \@results_obj);
	
	ok($result->num_result() == $numelements, "Probando el número de resultados");
	
	for (1..$numelements)
	{
		ok(defined $result->get_result(), "Probando que los objetos GRID::Machine::Result se almacenan bien en la lista");
	}
}

# Test para la sobrecarga del operador booleano
{
	my @results_obj;
	my $numelements = 3;
	push @results_obj, GRID::Machine::Result->new( results => [ $_ ] ) for (1..$numelements);
	
	my $result = Batch::Cluster::Result->new(results => \@results_obj);
	ok($result, "Probando la sobrecarga del operador booelano, devolviendo true");
	
	$result->add_result(GRID::Machine::Result->new( results => [ 0 ]));
	
	ok($result->num_result() == $numelements + 1, "Probando el número de resultados luego de insertar uno más");
	
	ok(!$result, "Probando la sobrecarga del operador booelano, devolviendo false");
}

{
	my $r = Batch::Cluster::Result->new();
	$r->add_result_in_order(GRID::Machine::Result->new( results => [ "Elemento $_"] ), $_) for(0..4);
	
	for(0..4)
	{
		is_deeply($r->get_result(), GRID::Machine::Result->new( results => [ "Elemento $_"] ), "Probando las inserciones ordenadas - $_");
	}
	
	
}